
/*~~~~~~~~~~~~~~~~~~~~~~~~【变量在头部就已经被声明，但是定义与初始化在主函数内：】~~~~~~~~~~~~~~~~~~~~~~~~~*/
//#include <stdio.h>
// 
//// 函数外定义变量 x 和 y
//int x;
//int y;
//int addtwonum()
//{
//    // 函数内声明变量 x 和 y 为外部变量
//    extern int x;
//    extern int y;
//    // 给外部变量（全局变量）x 和 y 赋值
//    x = 1;
//    y = 2;
//    return x+y;
//}
// 
//int main()
//{
//    int result;
//    // 调用函数 addtwonum
//    result = addtwonum();
//    
//    printf("result 为: %d",result);
//    return 0;
//}

/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/
//如果需要在一个源文件中引用另外一个源文件中定义的变量，我们只需在引用的文件中将变量加上 extern 关键字的声明即可。
//
//addtwonum.c 文件代码：
//#include <stdio.h>
///*外部变量声明*/
//extern int x ;
//extern int y ;
//int addtwonum()
//{
//    return x+y;
//}
//test.c 文件代码：
//#include <stdio.h>
//  
///*定义两个全局变量*/
//int x=1;
//int y=2;
//int addtwonum();
//int main(void)
//{
//    int result;
//    result = addtwonum();
//    printf("result 为: %d\n",result);
//    return 0;
//}
//当上面的代码被编译和执行时，它会产生下列结果：
//
//$ gcc addtwonum.c test.c -o main
//$ ./main
//result 为: 3

/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/
//C 中的左值（Lvalues）和右值（Rvalues）
//C 中有两种类型的表达式：
//
//左值（lvalue）：指向内存位置的表达式被称为左值（lvalue）表达式。左值可以出现在赋值号的左边或右边。
//右值（rvalue）：术语右值（rvalue）指的是存储在内存中某些地址的数值。右值是不能对其进行赋值的表达式，
//也就是说，右值可以出现在赋值号的右边，但不能出现在赋值号的左边。

/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/


/*~~~~~~~~~~~~~~~~~~~~~~~~【】~~~~~~~~~~~~~~~~~~~~~~~~~*/



